#include <iostream>
using namespace std;


void func1(){

    int a;
    a=123;

    int b=456;

    //先去定义int 类型的变量(给变量分配了一个内存空间)，再赋值(把数据放到内存里面去)
    //先买房子，再去结婚(房子就是左值，媳妇儿就是右值)， 这样是不是能好理解一点


    //从字面上来说，左值就是放在赋值运算左边的，右值就是放在赋值运算右边的
    //a,b 是左值， 123,456 是右值




    a=a+1;//a(这里用的是内存地址 左值)=a(这里用的是值123 还是左值，当成右值使用)+1   房子还是那个房子，只不过，房子里面又多了一个人，还住在那个房子里面
    b=b+2;//同理 b(取内存地址 左值)=b(取值456 还是左值，当右值用)+2         生了双胞胎
    int c=a+b;//c(取内存地址 左值)=a(取值124 左值当右值用)+b(取值458 左值当右值用)


    //左值一般代表一个内存地址，右值一般用具体的数据
    //左值在某些场景下可以当右值来用，此时具有右值属性，但右值不能当左值来用
    //在分析一个表达式或变量是左值还是右值时，先看是不是左值，不是左值，就是右值

    int d=123456;

    //123456=d;//



}

int main(){
    func1();

    return 0;
}